/**
在TypeScript中，泛型接口是一种强大的特性，允许开发者定义可以处理多种类型的接口。泛型接口通过使用类型参数来实现类型的灵活性和可复用性。
  1. 泛型接口的基本定义
  - 泛型接口使用类型参数来定义其结构，允许在实现接口时指定具体的类型。

    例如：
  interface GenericIdentity<T> {
        (arg: T): T;
    }
  2. 实现泛型接口
  - 类或对象可以实现泛型接口。在实现时，需要提供具体的类型参数。

    例如：
  const myIdentity: GenericIdentity<number> = (arg) => {
        return arg;
    };

    const result = myIdentity(42); // result 的类型为 number
  3. 多个类型参数的泛型接口
  - 泛型接口可以接受多个类型参数，以支持更复杂的数据结构。

    例如：
  interface Pair<K, V> {
        key: K;
        value: V;
    }

    const myPair: Pair<string, number> = {
        key: "age",
        value: 30
    };
  4. 泛型约束
  - 泛型接口可以对类型参数进行约束，以限制其类型范围，确保类型安全。

    例如：
  interface Lengthwise {
        length: number;
    }

    interface GenericArray<T extends Lengthwise> {
        items: T[];
        getLength(): number;
    }

    const myArray: GenericArray<string[]> = {
        items: ["hello", "world"],
        getLength() {
            return this.items.length;
        }
    };
  5. 泛型接口与类的结合
  - 泛型接口可以与类结合使用，使类能够实现接口并处理多种类型。

    例如：
  class GenericStorage<T> implements GenericIdentity<T> {
        private items: T[] = [];

        add(item: T): void {
            this.items.push(item);
        }

        getItems(): T[] {
            return this.items;
        }
    }

    const storage = new GenericStorage<number>();
    storage.add(1);
    storage.add(2);
    console.log(storage.getItems()); // 输出: [1, 2]
  6. 总结
  泛型接口是TypeScript中一种强大的特性，提供了灵活性和可重用性。通过定义泛型接口，开发者可以创建适用于多种类型的结构，提高代码的可维护性和类型安全性。泛型接口在处理复杂数据结构和实现通用算法时尤为重要。
 */
interface IPerson<Type = string> {
  name: Type;
  age: number;
  gender: Type;
}

const person: IPerson = {
  name: "person",
  age: 18,
  gender: "male",
};

const person2: IPerson<number> = {
  name: 123,
  age: 18,
  gender: 123,
}


export {}